<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  function myCall(target,...props) {
    // 找到 test
    // key 唯一的
    const a = Symbol('fn');
    target[a] = this;
    let res = target[a](...props);
    delete target[a];
    console.log(target);
    return res;
  }

  let obj = {a: 123,fn:()=>{}};

  function test(...parmas) {
    console.log(this, ...parmas);
    return 10;
  }

  // test(); // 不改变 this : node: global  浏览器里面 是window
  // test
  // 1. 执行
  // 3. 返回值
  // 2. this指向改变了
  // 4. 将myCall挂载到原型上面
  // 5. 参数 原封不动的传递过去
  // let res = test.call(obj);
  // console.log(res);

  Function.prototype.myCall = myCall;

  const res = test.apply(obj);
  console.log(res);


</script>
</body>
</html>
